<?php if(!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * POSTMAN LIBRARY
 * Postacı kütüphanesi
 * Sitedeki tüm mail trafiği bu kütüphane aracılığı ile işletilir.
 * 
 * @author Ali OYGUR <alioygur@gmail.com>
 */
class Postman {
    
    // ci supper global
    private $ci = NULL; 

    // genel bilgileri bu değişkende tutulur.
    // örneğin kime gönderilecek kim tarafından gönderilecek vs
    public $data = array(
        'to'        => NULL,
        'subject'   => NULL,
        'message'   => NULL,
        'from'      => NULL,
        'from_name' => NULL
    );  

    public function __construct()
    {   
        // INIT
    
        // set ci supper global object
        $this->ci = &get_instance();    

        // load ci email lib
        $this->ci->load->library('email');

        // set default data
        // datada default değerler set ediliyor örneğin kimin tarafından gönderildiği vs
        $this->data = array_merge($this->data, array(
            'from'      => setting('mail', 'from_email'),
            'from_name' => setting('mail', 'from_name'),
        ));
    }   

	/**
	 * Yeni üye kayıt maili.
	 * Yeni bir üye olduğunda kullanıcıya aramıza hoşgeldiniz tarzinda bir 
	 * eposta gönderir.
	 *
	 * @param int user id
	 **/
	public function welcome($uid)
	{
		// kullanıcının bilgileri çekiliyor.
		$this->ci->load->model('user_model');
		$user = $this->ci->user_model->get(array('id' => $uid));

		$data = array(
			'fullname' => $user->firstname . ' ' . $user->lastname,
			'login_url' => site_url('user/login'),
			'forgot_password_url' => site_url('user/forgot_password')
		); 
		$mail_body = $this->ci->load->view('common/mail_templates/welcome', $data, TRUE);
		
		$this->data['to']      = $user->email;
		$this->data['subject'] = 'Aramıza Hoşgeldiniz';
		$this->data['message'] = $mail_body;
		
		return $this->send();
	}

	/**
	 * Şifre Sıfırlama maili
	 *
	 * @param int forgot password row id
	 **/
	public function forgot_password($id)
	{
		$row = $this->ci->db
			->select('u.email, fp.code')
			->from('forgot_password AS fp')
			->join('user AS u', 'fp.user_id = u.id')
			->where(array('fp.id' => $id))
			->get()
			->row();

		$data = array(
			'reset_password_url' => site_url("user/reset_password/?code={$row->code}")
		); 
		$mail_body = $this->ci->load->view('common/mail_templates/forgot_password', $data, TRUE);
		
		$this->data['to']      = $row->email;
		$this->data['subject'] = 'Şifre Sıfırlama';
		$this->data['message'] = $mail_body;
		
		return $this->send();
	}
    /** 
     * Yeni sipariş alındı maili.
     * Yeni bir sipariş alındığında müşteriye siparişin tarafımıza ulaştığını bildiren
     * bir mail gönderir
     *
     * @param int order id
     */
    public function new_order($order_id)
    {   
        $order = $this->ci->db->get_where('order', array('id' => $order_id))->row();
    
        $data = array(
            'order' => $order,
            'my_orders_link' => site_url('order/index') // siparişlerim linki   
        );

        $message = $this->ci->load->view('mail_templates/new_order', $data, TRUE);

        $this->data['to']      = $order->email;
        $this->data['subject'] = 'Siparişiniz Tarafımıza Ulaştı.';
        $this->data['message'] = $message;

        return $this->send();  
    }   
    
    /** 
     * Sipariş Durumu Değiştirildi.
     * Siparişin durumu değiştirildiğinde müşteriye durumun değiştirildiğini bildiren
     * Bir mail gönderilir.
     *
     * @param int order id
     */
    public function order_status_changed($order_id)
    {   
        // load order model and get order detail
        $this->ci->load->model('backend/order_model');
        $order = $this->ci->order_model->get($order_id);

        // get all order statuses
        $order_statuses = $this->ci->db->get_where('order_status', array('status' => '1'))->result();

        // notu çekelim
        $comment = $this->ci->db
            ->select('comment')
            ->from('order_history')
            ->where(array('order_id' => $order_id))
            ->order_by('id', 'desc')
            ->limit(1)
            ->get()
            ->row()
            ->comment;

        $data = array(
            'order' => $order,
            'my_orders_link' => site_url('order/index'), // siparişlerim linki
            'order_statuses' => $order_statuses,
            'comment' => $comment
        );

        $message = $this->ci->load->view('mail_templates/order_status_changed', $data, TRUE);

        $this->data['to']      = $order->email;
        $this->data['subject'] = "Siparişinizin durumu değiştirildi ({$order->order_status})";
        $this->data['message'] = $message;

        return $this->send();  
    }   
    
    /** 
     * Kütüphane içerisindeki tüm mailler
     * bu fonksiyondan çıkar.
     */
    private function send()
    {   
        $data = $this->data;

        $this->ci->email->from($data['from'], $data['from_name']);
        $this->ci->email->to($data['to']);
        $this->ci->email->subject($data['subject']);
        $this->ci->email->message($data['message']);

        return $this->ci->email->send();
    }   
}
/* End of file postman.php */
